Applications created for mobile devices form a growing industry. Individuals, corporations, and other entities are creating an increasing number and variety of mobile applications. Often, a particular version of a mobile application will only work on mobile devices using the specific mobile device platform for which the mobile application was developed. However, there are a number of popular mobile device platforms. This can pose a number of problems to mobile application developer. A developer may limit development of a mobile application to only a subset of mobile device platforms, thereby limiting the number of potential users and/or customers. Should the developer wish to expand the number of mobile platforms on which a mobile application may be used, the developer may need to expend additional resources to create new versions for the additional mobile platforms. Supporting multiple versions, each released for a separate mobile platform, can add cost, stress and delay to the software support lifecycle. Also, the ability to create and support different versions of a mobile application for different mobile platforms may require that a developer learns about and stays current on differing implementation details for the various mobile platforms. Faced with this variety of platform-specific implementation details, a developer may inadvertently introduce bugs into the mobile applications.
Advances in modern software development have allowed for a limited degree of cross-platform mobile application development, but many shortcomings still exist. For example, a developer may be able to reuse some portions of a mobile application created for one platform when creating a version of that mobile application for a different platform. However, portions of that mobile application which interact with certain mobile device resources may need to be rewritten for the different platform. These mobile device resources may include the hardware or related software (e.g., a driver) of the mobile device, such as a camera, a global positioning satellite (“GPS”) receiver, an accelerometer, a gyroscope, a communications radio, a user input receiver (e.g., multi-touch user input), file management and data storage. Using existing software development tools and techniques, portions of a mobile application which interact with such mobile device resources may need to be implemented separately for different mobile device platform.
Additionally, there are many software developers whose experience and knowledge is focused on development of applications designed to operate in a network hosted environment. Some of these developers may be unfamiliar with mobile application development but may nonetheless wish to create mobile applications. However, knowledge of hosted application development may not be entirely sufficient for the creation of a mobile application. For example, a developer accustomed to creating hosted applications may expect certain host resources to be available to an application. Examples of these host resources may host-based storage, a database service, a message forwarding service, and a reply/request interface. As one or more of these host-based resources may be unavailable mobile applications running on certain mobile platforms, such a developer may face a challenge of unfamiliar development constraints when creating a mobile application. Or, a developer may simply prefer to develop applications which have access to host resources. Alternatively or additionally, a developer may wish create a mobile application with access to host resources which typically require a network connection to access, but may also want the mobile application to have access to those host resources even when it lacks a network connection.
Furthermore, there are a number of network resources which may be useful for a mobile application to access. Examples of such network resources include electronic catalogues and the items which they contain, metric data, and advertisements. To the extent that a network resource can be accessed by a mobile device, there may be one or more restrictions which complicate such access. For example, an implementation for accessing such a network resource may require a significant amount of work to establish a connection, authenticate, and request the network resource. This may need to be implemented in a format specific to the particular network resource. For example, one electronic catalog may have an application programming interface (“API”) which allows a mobile device to access the electronic catalog's contents using uniquely formatted queries and/or parameters. Another electronic catalog may have a separate API which requires the use of differently formatted queries and/or parameters. A mobile application developer may need to be familiar with this variety of API's in order to create a mobile application capable of accessing the various electronic catalogues.
Some network resource requests may require complex implementations beyond what can currently be accessed through the content of a mobile application. For example, a developer may need to use a non-content-based implementation to access a network resource, when that developer would be more easily able to create content-based applications. As another example, a party exercising control over a network resource may change the format required to interact with the network resource. This may cause existing versions of mobile applications which could previously access the network resource to no longer be capable of accessing the network resource.